home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)tu.d64 / ponzo tutor-7.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  15KB  |  383 lines

  1. 0 REM" PONZO*82*WATERLOO
  2. 1 [143]"
  3. 5 POKE53281,15:POKE53280,12:PRINT"[144]"
  4. 10 PRINT"[147]               C64 TUTOR-7
  5. 15 [153]"ORTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN^"
  6. 20 [153]"(null)   ...AND MORE MACHINE LANGUAGE...  WAIT (null)":MS$[178]" WELCOME! "
  7. 25 [153]"/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXPSTOP"
  8. 35 [141]60000:[141]63100:[141]63000
  9. 40 [141]20000
  10. 45 [153]"LOAD":[153]SD$"RECALL THAT THE 6510WAIT HAS A"
  11. 50 [153]"NUMBER OF INTERNAL REGISTERS...":[141]63000:[153]A$X$Y$
  12. 60 [141]39100:[153]"SOME COMMANDS AFFECT THE NUMBERS"
  13. 70 [153]"CONTAINED IN THESE REGISTERS..":[141]63000:[153]SD$""
  14. 90 [153]"ADCWAIT ANDWAIT ASLWAIT CMPWAIT CPXWAIT CPYWAIT DECWAIT DEXWAIT DEY"
  15. 100 [153]"EORWAIT INCWAIT INXWAIT INYWAIT LDAWAIT LDXWAIT LDYWAIT LSRWAIT ORA"
  16. 110 [153]"PLAWAIT PLPWAIT ROLWAIT RORWAIT RTIWAIT SBCWAIT TAXWAIT TSXWAIT TXA"
  17. 120 [153]"..AND TYAWAIT!!":MS$[178]"WHERE'SBITWAIT" :[141]63100:[141]63000
  18. 130 [141]39100:[153]"THE 6510WAIT KEEPS TRACK OF WHETHER"
  19. 140 [153]"ONE OF THESE OPERATIONS PRODUCES A ZWAITERO"
  20. 150 [153]"OR NWAITEGATIVE RESULT..AND, FOR ADCWAIT"
  21. 160 [153]"AND SBCWAIT (ADD & SUBTRACT), WHETHER"
  22. 170 [153]"THE OPERATION PRODUCES AN OVERFLOWWAIT.":[141]63000
  23. 180 [141]39100:[153]"THE PWAITROCESSOR STATUS REGISTER"
  24. 190 [153]"HAS 8 BITS. THREE BITS ARE DEVOTED TO"
  25. 200 [153]"NWAITEGATIVE,OVWAITERFLOW AND ZWAITERO.":[141]63000:[153]P$
  26. 210 [151]P(0),142:[151]P(1),150:[151]P(6),154:[141]63000
  27. 215 [151]P(0),32:[151]P(1),32:[151]P(6),32
  28. 220 [141]39100:[153]"IF AN OPERATION PRODUCES A NWAITEGATIVE"
  29. 230 [153]"RESULT,N=1WAIT":[151]P(0),177:[141]63000
  30. 240 [141]39100:[153]"IF IT'S NOT NEGATIVE THEN N=0WAIT"
  31. 250 [153]"(MEANING IT'S POSITIVE!)":[151]P(0),176:[141]63000
  32. 260 [153]"LOADA NEGATIVE NUMBER HAS A '1'"
  33. 270 [153]"IN THE MSB POSITION."
  34. 280 [153]"IF ONE OF THE OPERATIONS WHICH AFFECT"
  35. 290 [153]"THE A,X OR Y-REGISTERS IS PERFORMED,"
  36. 300 [153]"AND THE MSB OF THE RESULT IS '1', THEN"
  37. 310 [153]"N=1WAIT. IT'S THAT SIMPLE!":[141]63000
  38. 320 MS$[178]"  N=MSBWAIT ":[141]63100:[141]63000
  39. 330 [153]"LOADBMI $1234WAIT WILL TEST THE NWAIT-BIT AND,"
  40. 340 [153]"IF IT'S '1', WILL BRANCH TO $1234."
  41. 350 [153]"(SINCE THE 'RESULT' IS MIWAITNUS!)"
  42. 360 [153]"BPL $1234WAIT WILL BWAITRANCH TO $1234"
  43. 370 [153]"IF THE 'RESULT' IS PLWAITUS (N=0)."
  44. 380 [153]"IF WE LDA #$D3WAIT, THEN N=1"
  45. 390 [153]"BECAUSE $D0=11010011 IN BINARY AND MSB=1"
  46. 400 [153]"SOCMDCMDFREFREON..BPL $1234WAIT WILL NOTCMDCMDCMDFREFREFREON TAKE US"
  47. 410 [153]"TO $1234.":MS$[178]" CAREFUL!!":[141]63000:[141]63100
  48. 420 [153]"LOAD         THE V-BITWAIT"
  49. 425 [153]"SINCE THE MSB CARRIES THE 'SIGN' OF A"
  50. 430 [153]"NUMBER (IN 'SIGNED ARITHMETIC')"
  51. 440 [153]"THEN AN ADCWAIT OR SBCWAIT WHICH CAUSES"
  52. 450 [153]"THE NEXT-TO-MSB TO 'OVERFLOW' INTO THE"
  53. 460 [153]"SIGN-BIT WILL CAUSE V=1WAIT."
  54. 470 [153]"IF 'SIGNED ARITHMETIC' IS NOT BEING"
  55. 480 [153]"PERFORMED THEN WE CAN IGNORE THE V-BIT."
  56. 490 [153]"ALTHOUGH ADCWAIT AND SBCWAIT MAY SET V=1"
  57. 500 [153]"WE CAN FORCE V=0 WITH THE COMMAND:"
  58. 510 [153]"CLVWAIT=CLWAITEAR THE VWAIT-BIT.":[141]63000:[141]10000
  59. 520 [153]"LOADIT'S OFTEN NECESSARY TO JWAITUMPWAIT FROM"
  60. 530 [153]"ONE PLACE TO ANOTHER IN A PROGRAM."
  61. 540 [153]"WE CAN USE: JMP $1234WAIT."
  62. 550 [153]"OF COURSE WECLOSEHAD BETTER HAVE SOME"
  63. 560 [153]"INSTRUCTIONS AT $1234!!"
  64. 570 [153]"IF OUR PROGRAM IS AT $1000-$2000"
  65. 590 [153]"AND IT HAS A JMP $1234WAIT,THAT'S OK."
  66. 600 [153]"IF WECLOSEPHYSICALLY MOVE THIS PROGRAM TO,"
  67. 610 [153]"SAY, $3000 TO $4000 (PERHAPS TO MAKE"
  68. 620 [153]"ROOM FOR SOME BASICWAIT AT $0801 TO $2000)"
  69. 630 [153]"THEN THE RELOCATED PROGRAM SHOULD NOT"
  70. 640 [153]"HAVE JMP $1234WAIT IN IT!!":[141]63000
  71. 650 [153]"LOADHERE'S ANOTHER USE OF THE V-BIT."
  72. 660 [153]"SUPPOSE WE HAVE JMP $1234WAIT LOCATED"
  73. 670 [153]"IN OUR PROGRAM AT $1200-$1202."
  74. 680 [153]"$1200  $1201  $1202   $1203"
  75. 690 [153]"  4CWAIT     34WAIT     12WAIT     ***"
  76. 700 [153]"  ^JMP   ^HI    ^LO   ^NEXT"
  77. 710 [153]"  ^INST  ^BYTE  ^BYTE ^INST"
  78. 720 [153]"WE WOULD NORMALLY CONTINUE TO THE NEXT"
  79. 730 [153]"INSTRUCTION AT $1203WAIT BUT,BECAUSE OF"
  80. 740 [153]"THE JMPWAIT, WE ACTUALLY MOVE AHEAD TO $1234"
  81. 750 [153]"WHICH IS $31WAIT MEMORY LOC'NS FARTHER ON!":[141]63000
  82. 760 [153]"LOADWE CAN PERFORM A RELATIVE JUMPWAIT, BY"
  83. 770 [153]"$31WAIT MEMORY LOCATIONS, BY WRITING:"
  84. 780 [153]"CLV     WAIT=CLEAR V-BIT (SET V=0)."
  85. 790 [153]"BVC #$31WAIT=BRANCH AHEAD $31 LOC'NS IF V=0"
  86. 800 [153]"THIS WILL TAKE US TO $1234 AND THE"
  87. 810 [153]"PROGRAM IS 'RELOCATABLE'!":[141]63000:[153]SD$
  88. 820 [153]"$1200  $1201  $1202"
  89. 830 [153]"  B8WAIT     50WAIT     31"
  90. 840 [153]"  ^CLV   ^BVC   ^# LOC'NS"
  91. 850 [153]"IF WE DON'T USE JMPWAITS, BUT 'RELATIVE"
  92. 860 [153]"BRANCHES' INSTEAD, OUR PROGRAM WILL"
  93. 870 [153]"RUN ANYWHERE IN MEMORY!":[141]63000
  94. 875 [153]"LOADCONFUSING??WAIT":[153]"WHEN DO WECLOSESAY BVC $1234WAIT"
  95. 876 [153]"AND WHEN BVC #$31WAIT?*!"
  96. 877 [153]"ACTUALLY, ALTHOUGH AN 'ASSEMBLER' SUCH"
  97. 878 [153]"AS MICROMONWAIT WILL ALLOW US TO SAY"
  98. 879 [153]"BVC $1234WAIT, THE MACHINE LANGUAGE CODE"
  99. 880 [153]"GENERATED WILL READ BVC #$31WAIT!!"
  100. 881 [153]"THAT IS, THE INSTRUCTION WILL APPEAR"
  101. 882 [153]"IN MEMORY AS 50WAIT 31WAIT..MEANING BRANCH"
  102. 883 [153]"AHEAD $31 LOC'NS IF V=0.":[141]63000
  103. 885 [153]"LOADALL BWAITRANCH INSTRUCTIONS ARE 'RELATIVE':"
  104. 890 [153]"BCSWAIT=BRANCH IF CARRY IS SET(C=1)"
  105. 900 [153]"BCCWAIT=BRANCH IF CARRY IS CLEAR(C=0)"
  106. 910 [153]"BEQWAIT=BRANCH IF Z-BIT IS SET(Z=1)"
  107. 920 [153]"BNEWAIT=BRANCH IF Z-BIT IS CLEAR(Z=0)"
  108. 930 [153]"BMIWAIT=BRANCH IF N-BIT IS SET(N=1)"
  109. 940 [153]"BPLWAIT=BRANCH IF N-BIT IS CLEAR(N=0)"
  110. 950 [153]"BVSWAIT=BRANCH IF V-BIT IS SET(V=1)"
  111. 960 [153]"BVCWAIT=BRANCH IF V-BIT IS CLEAR(V=0)":[141]63000
  112. 965 MS$[178]"RELATIVES?":[141]63100
  113. 970 [153]"LOAD":[153]P$:[153]SD$"SOME OF THE BITS OF THE PWAITROCESSOR"
  114. 980 [153]"STATUS REGISTER CAN BE SET(=1), AND"
  115. 990 [153]"SOME CAN BE CLEARED(=0).":[141]63000:[141]39100
  116. 1000 [153]"CLVWAIT=CLEARS OVWAITERFLOW":[151]P(1),176:[141]63000:[141]39100
  117. 1005 [151]P(1),32
  118. 1010 [153]"CLCWAIT=CLEARS CWAITARRY":[151]P(7),176:[141]63000:[141]39100
  119. 1015 [151]P(7),32
  120. 1020 [153]"CLDWAIT=CLEARS DWAITECIMAL MODE FLAG":[151]P(4),176:[141]63000
  121. 1025 MS$[178]"WHAT FLAG?":[141]63100:[141]63000:[141]39100:[151]P(4),132
  122. 1030 [153]"CLIWAIT=CLEARS IWAITNTERRUPT FLAG":[151]P(5),176:[141]63000
  123. 1035 MS$[178]"WHAT FLAG!WAIT":[141]63100:[151]P(5),137:[141]63000:[141]39100
  124. 1040 [153]"LOAD"SD$"ALTOGETHER NOW..":[153]P$
  125. 1050 [151]P(0),14:[151]P(1),22:[151]P(4),4:[151]P(5),9:[151]P(6),26:[151]P(7),3
  126. 1055 [141]63000
  127. 1060 [141]39100:[153]"NWAIT=NWAITEGATIVE FLAG BIT.":[151]P(0),[194](P(0))[170]128
  128. 1061 [141]63000
  129. 1070 [153]SD$"VWAIT=OVWAITERFLOW FLAG BIT.":[151]P(1),[194](P(1))[170]128:[141]63000
  130. 1080 [153]SD$"DWAIT=DWAITECIMAL MODE FLAG BIT.":[151]P(4),[194](P(4))[170]128
  131. 1081 [141]63000
  132. 1090 [153]SD$"IWAIT=IWAITNTERRUPT FLAG BIT.":[151]P(5),[194](P(5))[170]128
  133. 1091 [141]63000
  134. 1100 [153]SD$"ZWAIT=ZWAITERO FLAG BIT.":[151]P(6),[194](P(6))[170]128:[141]63000
  135. 1110 [153]SD$"CWAIT=CWAITARRY FLAG BIT.":[151]P(7),[194](P(7))[170]128
  136. 1115 [141]63000
  137. 1120 [151]P(2),214:MS$[178]"NOT USED!!WAIT":[141]63100
  138. 1125 [161]Z$:[139]Z$[178]""[167][151]P(2),32:[137]1120
  139. 1130 [151]P(3),130:[141]39100:[153]"WHEN THE 6510 GETS A BREAKWAIT COMMAND"
  140. 1140 [153]"(WHICH IS 00WAIT) "
  141. 1150 [153]"THE BWAITREAK BIT IS SET(B=1)":[141]63000:[151]P(3),130
  142. 1160 MS$[178]"COMMAND=00":[141]63100:[141]63000
  143. 1170 [153]"LOADJUST IN CASE YOU'RE WONDERING.."
  144. 1180 [153]"THE 6510WAIT HAS A DECIMALWAIT MODE WHEREBY"
  145. 1190 [153]"ARITHMETIC OPERATIONS ARE PERFORMED"
  146. 1200 [153]"ASSUMING ALL NUMBERS ARE NOTWAIT IN DECIMAL"
  147. 1210 [153]"BUT RATHER IN BWAITINARY CWAITODED DWAITECIMAL!"
  148. 1220 [153]"IF WE WANT TO OPERATE IN 'DECIMAL"
  149. 1230 [153]"MODE' WE MUST SET THE DWAIT-FLAG TO '1':"
  150. 1240 [153]"SED"
  151. 1250 [153]"TO GET OUT OF THIS MODE WE CLEAR THE"
  152. 1260 [153]"DECIMAL MODE FLAG TO '0':"
  153. 1270 [153]"CLD":[141]63000
  154. 1280 [153]"LOADFURTHER..THE 6510WAIT CAN BE INTERRUPTED"
  155. 1290 [153]"BY LOWERING THE VOLTAGE ON ONE OF IT'S"
  156. 1300 [153]"PINS..THE IRQWAIT OR ICMDFREONNTERRUPT RCMDFREONEQCMDFREONUEST PIN."
  157. 1310 [153]"(EXTERNAL DEVICES DO THIS TO THE 6510"
  158. 1320 [153]"ALL THE TIME!)"
  159. 1330 [153]"WHEN THE 6510 GETS AN IRQWAIT IT STOPS"
  160. 1340 [153]"WHAT IT'S DOIN'...SERVICES THE"
  161. 1350 [153]"INTERRUPTING DEVICE..THEN RETURNS"
  162. 1360 [153]"FROM THE INTERRUPT TO CONTINUE.":[141]63000
  163. 1370 [153]"LOADFOR EXAMPLE, EVERY JIFFY(=1/60 SECOND)"
  164. 1380 [153]"THE 6510 INTERRUPTS WHATEVER IT'S DOIN'"
  165. 1390 [153]"AND UPDATES THE INTERNAL CLOCK,CHECKS"
  166. 1400 [153]"THE KEYBOARD TO SEE IF YOU'RE PRESSING"
  167. 1410 [153]"THE STOPWAIT KEY, ETC."
  168. 1420 [153]"WHETHER OR NOT THE 6510 WILL LET ITSELF"
  169. 1430 [153]"BE INTERRUPTED DEPENDS UPON A MAGIC"
  170. 1440 [153]"BIT IN THE PWAIT-REGISTER."
  171. 1450 [153]"GUESS WHICH ONE?!!":[141]63000
  172. 1460 [153]"LOAD"P$:[151]P(0),14:[151]P(1),22:[151]P(3),2:[151]P(4),4:[151]P(5),137
  173. 1470 [151]P(6),26:[151]P(7),3
  174. 1480 [153]SD$"YOU BET!"
  175. 1490 [153]"IF THE IWAIT BIT IS CLEAR(=0) THE 6510"
  176. 1500 [153]"WILL LETWAIT ITSELF BE INTERRUPTED."
  177. 1510 [153]"IF I=1 HOWEVER IT WILL NOTWAIT!"
  178. 1520 [153]"SEIWAIT WILL SET I=1"
  179. 1530 [153]"CLIWAIT WILL CLEAR I=0"
  180. 1540 [141]63000
  181. 1550 [153]"LOADSO, IF YOU WANT THE 6510 TO IGNORE"
  182. 1560 [153]"INTERRUPTS (INCLUDING THE POOR GUY"
  183. 1570 [153]"BANGING ON THE STOPWAIT KEY!)"
  184. 1580 [153]"START YOUR PROGRAM WITH SEIWAIT AND,"
  185. 1590 [153]"...TO AVOID ANY VIOLENCE..."
  186. 1600 [153]"(EVENTUALLY) END IT WITH CLIWAIT.":[141]63000
  187. 1610 [153]"LOADAND THEN THERE ARE SUBROUTINESWAIT:"
  188. 1620 [153]"IF WE WRITE LO-O-ONG MACHINE LANGUAGE"
  189. 1630 [153]"PROGRAMS (USING AN ASSEMBLER SO WE"
  190. 1640 [153]"DON'T HAVE TO ENTER THE HEX BYTES"
  191. 1650 [153]"INTO MEMORY BUT CAN USE ASSEMBLY"
  192. 1660 [153]"LANGUAGE) THEN IT'S CONVENIENT TO"
  193. 1670 [153]"BREAK UP OUR LONG PROGRAM INTO WEE"
  194. 1680 [153]"PIECES=SUBROUTINES."
  195. 1690 [153]"(null)IN BASIC WE'D SAY: GOSUB 1000WAIT"
  196. 1700 [153]"(null)IN ASSEMBLER WE'D SAY: JSR $1234"
  197. 1710 [153]"(null)WHICH TRANSLATES TO: 20WAIT 34WAIT 12WAIT"
  198. 1720 [153]" IN MACHINE LANGUAGE!":[141]63000
  199. 1730 [153]"LOADBASIC SUBROUTINES MUST END IN RETURNWAIT"
  200. 1740 [153]"SO THE PROGRAM CAN GO BACK FROM WHERE"
  201. 1750 [153]"IT WAS 'CALLED'."
  202. 1760 [153]"IN ASSEMBLER WE END SUBROUTINES WITH"
  203. 1770 [153]"RTSWAIT=RWAITETWAITURN FROM SWAITUBROUTINE:"
  204. 1780 [153]"$1000 LDA #$00 "
  205. 1781 [153]"$1002 JSR $1234WAITTAN^"
  206. 1782 [153]"$1005 -----    WAIT (null)"
  207. 1783 [153]"      -----    WAIT (null)"
  208. 1784 [153]"      -----     (null)"
  209. 1785 [153]"      -----     ."
  210. 1786 [153]"$1234 *****    WAIT_EXPSUBROUTINE"
  211. 1787 [153]"      *****    "
  212. 1788 [153]"      RTS      "
  213. 1789 MS$[178]"THERE..AND":[141]63100:[141]63002
  214. 1790 [153]""
  215. 1791 [153]"$1002 JSR $1234WAIT   "
  216. 1792 [153]"$1005 -----    WAIT_^"
  217. 1793 [153]"      -----    WAIT (null)"
  218. 1794 [153]"      -----     (null)"
  219. 1795 [153]"      -----     ."
  220. 1796 [153]"$1234 *****    WAIT (null)          "
  221. 1797 [153]"      *****    WAIT (null)"
  222. 1798 [153]"      RTS      WAITTANEXP":MS$[178]"BACK AGAIN":[141]63100:[141]63000
  223. 1800 [153]"LOADJUST ONE MORE COMMAND...":[141]63000
  224. 1805 [153]"LOAD":[153]A$P$
  225. 1810 [153]SD$"LDA #$D3WAIT":N$[178]"11010011":[141]63010:[141]40110
  226. 1820 N$[178]"10000000":[141]40120:[141]63000:PP[178]300
  227. 1830 [153]SD$"RORWAIT=ROTATE RIGHT":N$[178]"01101001":[141]63010
  228. 1835 [151]P(7),32:[153]""[163]37)"0"
  229. 1836 [153]SD$"CARRY BIT REMOVED FOR SAFE KEEPING":[141]63000
  230. 1840 [153]""[166]17)"(null)CMD/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXPONCMD^";:[151]P(7),49
  231. 1845 [141]40096:[153]""CL$:[153]CL$
  232. 1846 [153]SD$"AWAIT-REGISTER ROTATED ..INTO CARRY!":[141]63000
  233. 1850 [153]"^CMD/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN":[151]A(0),48
  234. 1860 [153]SD$"CARRY BIT STUFFED INTO MSB OF AWAIT.":[141]63000
  235. 1870 [153]"LOAD..AND THERE'S ROLWAIT WHICH ALSO"
  236. 1880 [153]"INVOLVES THE CWAITARRY BIT..":[141]63000
  237. 1890 [153]"LOADSUPPOSE WE WANT TO JSR $1234"
  238. 1900 [153]"BUT ALSO WANT TO RETAIN ALL THE NUMBERS"
  239. 1910 [153]"IN THE 6510 REGISTERS, AFTER RETURNING"
  240. 1920 [153]"FROM THE SUBROUTINE."
  241. 1930 [153]"WE CAN PUSHWAIT ALL THE REGISTERS ONTO"
  242. 1940 [153]"THE STACKWAIT WHICH CONSISTS OF SEVERAL"
  243. 1950 [153]"MEMORY LOCATIONS IN RAMWAIT..$100-$1FF."
  244. 1960 [153]"PHAWAIT=PUSH THE A-REGISTER ONTO THE STACK"
  245. 1970 [153]"PHPWAIT=PUSH THE P-REGISTER ONTO THE STACK":[141]63000
  246. 1980 [153]"LOADTO PUSH THE X AND Y REGISTERS WE:"
  247. 1990 [153]"TXAWAIT PHAWAIT AND TYAWAIT PHAWAIT."
  248. 2000 [153]"SO..WE:"
  249. 2010 [153]"PHAWAIT PHPWAIT TXAWAIT PHAWAIT TYAWAIT PHA"
  250. 2020 [153]"THEN..JSR $1234."
  251. 2030 [153]"LATER, AFTER RTSWAIT, WE WANT ALL"
  252. 2040 [153]"THOSE NUMBERS BACK IN THE REGISTERS."
  253. 2050 [153]"SO WE PULLWAIT THEM FROM THE STACK"
  254. 2060 [153]"IN THE REVERSE ORDERWAIT!!!"
  255. 2070 [153]"PLAWAIT TAYWAIT PLAWAIT TAXWAIT PLPWAIT PLA":[141]63000
  256. 2080 [153]"LOADTHE STACK IS A NICE PLACE TO STORE"
  257. 2090 [153]"BYTES TEMPORARILY. IF WE WANT TO"
  258. 2100 [153]"EXCHANGE THE CONTENTS OF MEMORY LOC'NS"
  259. 2110 [153]"$2000 AND $3000 THEN WE CAN:"
  260. 2120 [153]"LDA $2000WAIT PHAWAIT LDA $3000WAIT STA $2000"
  261. 2130 [153]"PLAWAIT STA $3000":MS$[178]" SLICK!WAIT":[141]63000:[141]63100
  262. 2140 [153]"LOADYOUWAIT DETERMINE WHAT THE FOLLOWING"
  263. 2150 [153]"SUBROUTINE DOES..":[141]63000
  264. 3000 [153]"LOAD., 6000 A2 00    LDX #$00
  265. 3001 PRINT"., 6002 BD 00 04 LDA $0400,X
  266. 3002 [153]"., 6005 48       PHA
  267. 3003 PRINT"., 6006 BD 40 05 LDA $0540,X
  268. 3004 [153]"., 6009 9D 00 04 STA $0400,X
  269. 3005 PRINT"., 600C 68       PLA
  270. 3006 [153]"., 600D 9D 40 05 STA $0540,X
  271. 3007 PRINT"., 6010 BD A0 04 LDA $04A0,X
  272. 3008 [153]"., 6013 48       PHA
  273. 3009 PRINT"., 6014 BD E0 05 LDA $05E0,X
  274. 3010 [153]"., 6017 9D A0 04 STA $04A0,X
  275. 3011 PRINT"., 601A 68       PLA
  276. 3012 [153]"., 601B 9D E0 05 STA $05E0,X
  277. 3013 PRINT"., 601E E8       INX
  278. 3014 [153]"., 601F D0 E1    CPX #$A0
  279. 3015 PRINT"., 6021 D0 DF    BNE $6002
  280. 3016 [153]"., 6023 60       RTS
  281. 3020 M=6*4096:FORI=MTOM+35:READK:POKEI,K:NEXT
  282. 3030 DATA162,0,189,0,4,72,189,64,5,157,0,4,104,157,64,5,189,160,4
  283. 3040 DATA72,189,224,5,157,160,4,104,157,224,5,232,224,160,208,223,96
  284. 3050 U$="":V$="":FORI=1TOWD-1:U$=U$+"*":V$=V$+" ":NEXT
  285. 3055 PRINTBT$"[145][145][145][145]YOU CAN TRY IT!"
  286. 3100 GOSUB63000:PRINT"[147]";:FORI=1TO4:PRINTU$:NEXT:FORI=1TO4:PRINTV$:NEXT
  287. 3110 PRINT"END OF TUTOR7[146]"
  288. 3115 MS$="AU REVOIR![146]"
  289. 3120 FORI=1TO10:SYS6*4096:FORT=1TO500:NEXT:NEXT:GOSUB63100
  290. 3125 FORI=1TO10:GETZ$:NEXT:PRINTBT$"[145][145][145][145][145][145]SYS6*4096[145][145][145]":END
  291. 10000 PRINT"[147]":PRINTP$:PRINTSD$"[209]THE Z-BIT IS SET TO '1'"
  292. 10010 PRINT"IF EVERY BIT OF A 'RESULT' IS 00[146].":GOSUB63000
  293. 10020 POKEP(6),177:GOSUB63000:PRINTSD$"";
  294. 10030 PRINT"[209]Z=0 IF A 'RESULT' IS NOT[157][157][157][184][184][184][145] ZERO.":POKEP(6),176
  295. 10040 GOSUB63000
  296. 10050 PRINT"[147]":PRINTP$:PRINTSD$"AND THE CARRY[146] BIT.."
  297. 10060 PRINT"WHERE'S THE CARRY BIT!!":FORT=1TO10:PRINTCHR$(14);
  298. 10070 FORT1=1TO50:NEXT:PRINTCHR$(142);:FORT1=1TO50:NEXT:NEXT
  299. 10080 GOSUB63000:POKEP(7),131:GOSUB63000:RETURN
  300. 20000 PRINT"[147]HERE'S THE SET OF 6510[146] COMMANDS:"
  301. 20010 PRINT"ADC[146] AND[146] ASL[146] BCC[146] BCS[146] BEQ[146] BIT[146] BMI[146] BNE"
  302. 20020 PRINT"BPL[146] BRK[146] BVC[146] BVS[146] CLC[146] CLD[146] CLI[146] CLV[146] CMP"
  303. 20030 PRINT"CPX[146] CPY[146] DEC[146] DEX[146] DEY[146] EOR[146] INC[146] INX[146] INY"
  304. 20040 PRINT"JMP[146] JSR[146] LDA[146] LDX[146] LDY[146] LSR[146] NOP[146] ORA[146] PHA"
  305. 20050 PRINT"PHP[146] PLA[146] PLP[146] ROL[146] ROR[146] RTI[146] SBC[146] SEC[146] SED"
  306. 20060 PRINT"TXA[146] STA[146] STX[146] STY[146] TAX[146] TAY[146] TYA[146] TSX[146] TXA"
  307. 20070 PRINT"..AND TXS[146]!":GOSUB63000
  308. 20080 MS$="IMPRESSIVE":GOSUB63100
  309. 20090 GOSUB63000:RETURN
  310. 39000 PRINT"";:FORI=1TO17:PRINTCL$:NEXT:PRINT"";:RETURN
  311. 39100 PRINTSD$;:FORI=1TO15:PRINTCL$:NEXT:PRINTSD$;:RETURN
  312. 40096 POKEA(7),32:FORTT=1TOPP:NEXT:FORI=7TO1STEP-1:POKEA(I-1),32
  313. 40097 POKEA(I),VAL(MID$(N$,I,1))+48:FORTT=1TOPP:NEXT:NEXT:RETURN
  314. 40098 POKEA(0),32:FORTT=1TOPP:NEXT:FORI=0TO6:POKEA(I+1),32
  315. 40099 POKEA(I),VAL(MID$(N$,I+1,1))+48:FORTT=1TOPP:NEXT:NEXT:POKEA(7),48:RETURN
  316. 40110 FORI=0TO7:POKEA(I),160:FORTT=1TOPP:NEXT
  317. 40111 POKEA(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
  318. 40120 FORI=0TO7:POKEP(I),160:FORTT=1TOPP:NEXT
  319. 40121 POKEP(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
  320. 40130 FORI=0TO7:POKEX(I),160:FORTT=1TOPP:NEXT
  321. 40131 POKEX(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
  322. 40140 FORI=0TO7:POKEY(I),160:FORTT=1TOPP:NEXT
  323. 40141 POKEY(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
  324. 40160 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
  325. 40161 POKEM(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
  326. 41120 FORI=0TO7:POKEP(I),160:FORTT=1TOPP:NEXT
  327. 41121 POKEP(I),PEEK(A(I)):NEXT:RETURN
  328. 41130 FORI=0TO7:POKEX(I),160:FORTT=1TOPP:NEXT
  329. 41131 POKEX(I),PEEK(A(I)):NEXT:RETURN
  330. 41140 FORI=0TO7:POKEY(I),160:FORTT=1TOPP:NEXT
  331. 41141 POKEY(I),PEEK(A(I)):NEXT:RETURN
  332. 41160 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
  333. 41161 POKEM(I),PEEK(A(I)):NEXT:RETURN
  334. 41340 FORI=0TO7:POKEA(I),160:FORTT=1TOPP:NEXT
  335. 41341 POKEA(I),PEEK(X(I)):NEXT:RETURN
  336. 41360 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
  337. 41361 POKEM(I),PEEK(X(I)):NEXT:RETURN
  338. 41410 FORI=0TO7:POKEA(I),160:FORTT=1TOPP:NEXT
  339. 41411 POKEA(I),PEEK(Y(I)):NEXT:RETURN
  340. 41460 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
  341. 41461 POKEM(I),PEEK(Y(I)):NEXT:RETURN
  342. 60000 R$="[176][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][174][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][221][160][221][160][221][160][221][160][221][160][221][160][221][160][221][160][221]"
  343. 60001 R$=R$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][173][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][189]"
  344. 60002 A$=" A[146][145]"+R$:P$="P[146][145]"+R$
  345. 60003 X$=" X[146][145]"+R$:Y$="Y[146][145]"+R$
  346. 60004 M$="M[146][145]"+R$
  347. 60005 CR$="[176][192][174][157][157][157][221][221][157][157][157][173][192][189]"
  348. 60006 CC$=" A[146][221][157][157][157] [157] [157] [157] [157]   [157][157][157]   [157][157][157]   [145]            "
  349. 60007 WD=40:CRT=1024:PRINTCHR$(142)
  350. 60008 FORI=0TO7:A(I)=CRT+WD+3+2*I:P(I)=A(I)+20:X(I)=A(I)+3*WD:Y(I)=X(I)+20
  351. 60009 M(I)=Y(I)+3*WD:NEXT:C=CRT+7*WD+1
  352. 60010 SD$="":CL$="":FORI=1TOWD-1:CL$=CL$+" ":NEXT
  353. 60011 BT$="":FORI=1TO24:BT$=BT$+"":NEXT
  354. 60012 C$=CR$+"[176][192][179][157][157][157][221][157][221][157][221][157][221][157][171]_CARRY BIT"
  355. 60019 ML$=""
  356. 60020 BT$="":FORI=1TO24:BT$=BT$+"":NEXT
  357. 60021 PT$="[176][192][192][192][192][192][192][192][192][192][192][174][157][157][157][157][157][157][157][157][157][157][157][157][221][221][157][157][157][157][157][157][157][157][157][157][157][157][173][178][192][192][192][192][192][192][192][192][178][189]"
  358. 60022 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][206][163][163][163][163][163][163][163][163][163][163][163][163][205][157][157][157][157][157][157][157][157][157][157][157][157][157][157][165]============[167]"
  359. 60023 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][208][207][163][163][163][163][163][163][163][163][163][163][208][207][145][145][145][145][157][157][157][157][157][157][157][157][157][157][157][157]"
  360. 60024 PT$=BT$+"[145][145][145][145][145][145]"+PT$+"[144]"
  361. 60025 PRINTCHR$(142)
  362. 60099 PP=50
  363. 60100 RETURN
  364. 63000 PRINTBT$CL$;:FORTT=1TO50:NEXT
  365. 63001 PRINTBT$"RETURN[146] TO CONTINUE";:FORTT=1TO50:NEXT
  366. 63002 GETZ$:IFZ$<>""THEN63002
  367. 63003 GETZ$:IFZ$=""THEN63003
  368. 63004 RETURN
  369. 63010 PRINTBT$CL$;:FORTT=1TO50:NEXT
  370. 63011 PRINTBT$"[166][166][166][166][166][166][166][166]RETURN TO SEE IT HAPPEN[146][166][166][166][166][166][166][166][166]";:FORTT=1TO50:NEXT
  371. 63012 GETZ$:IFZ$<>""THEN63012
  372. 63013 GETZ$:IFZ$=""THEN63013
  373. 63014 RETURN
  374. 63100 FORT=1TO5:PRINTPT$MS$;
  375. 63101 PRINTPT$"          ";
  376. 63102 PRINTPT$MS$;:NEXT
  377. 63103 RETURN
  378. 63200 GOSUB63000
  379. 63201 PRINTSD$;:FORT=1TO15:PRINTCL$:NEXT:PRINTSD$;:RETURN
  380. 63300 GOSUB63100:GOSUB63010:RETURN
  381. 63400 PRINT"";:FORI=1TO5:PRINTCL$:NEXT:PRINT"";:RETURN
  382. 63999 GOSUB60000:PRINT"[147]":GOTO3000
  383.